package com.android.yummycookies.storage;

import java.util.Map;
import java.util.Set;

import com.android.yummycookies.commonInterface.IStore;

import android.graphics.Bitmap;
import android.util.SparseArray;

/**
 * Interface des classes servant a stocker des bitmap et des bitmap
 * redimensionnes en foncion d'un identifiant
 * 
 * @author julien
 */
public interface IBitmapsStore extends
		IStore<Integer, Bitmap, SparseArray<Bitmap>> {

	/**
	 * Renvoie le bitmap redimensionne correspondant a l'identifiant renseigne
	 * (null si inexistant)
	 * 
	 * @param id
	 *            un identifiant de bitmap
	 * @return un bitmap
	 */
	public Bitmap getScaledBitmap(Integer id);

	/**
	 * Renvoie la liste des bitmap redimensionnes correspondants aux id
	 * renseignes (null si inexistants)
	 * 
	 * @param ids
	 *            liste d'identifiants de bitmap
	 * @return une collection de bitmap correspondants aux identifiants
	 *         renseignes
	 */
	public SparseArray<Bitmap> getAllScaledBitmaps(Set<Integer> ids);

	/**
	 * Ajoute un bitmap redimensionne identifie par l'id renseigne
	 * 
	 * @param id
	 *            l'identifiant du bitmap
	 * @param bitmap
	 *            le bitmap redimensionne a ajouter
	 */
	public void putScaledBitmap(Integer id, Bitmap bitmap);

	/**
	 * Ajoute un ensemble de bitmap identifies par les id renseignes
	 * 
	 * @param bitmaps
	 *            un sparseArray de bitmap
	 */
	public void putAll(SparseArray<Bitmap> bitmaps);

	/**
	 * Ajoute un ensemble de bitmap redimensionnes identifies par les id
	 * renseignes
	 * 
	 * @param bitmaps
	 *            une map id/bitmap
	 */
	public void putAllScaledBitmaps(Map<Integer, Bitmap> bitmaps);

	/**
	 * Ajoute un ensemble de bitmap redimensionnes identifies par les id
	 * renseignes
	 * 
	 * @param bitmaps
	 *            un sparseArray de bitmap
	 */
	public void putAllScaledBitmaps(SparseArray<Bitmap> bitmaps);

	/**
	 * Supprime le bitmap redimensionne identifie pa l'id renseigne
	 * 
	 * @param id
	 *            l'identifiant du bitmap a supprimer
	 */
	public void removeScaledBitmap(Integer id);

	/**
	 * Supprime un ensemble de bitmap identifies par les id renseignes
	 * 
	 * @param bitmaps
	 *            un sparseArray de bitmap
	 */
	public void removeAll(SparseArray<Bitmap> bitmaps);

	/**
	 * Supprime un ensemble de bitmap redimensionnes identifies par les id
	 * renseignes
	 * 
	 * @param ids
	 *            liste des identifiants des bitmap a supprimer
	 */
	public void removeAllScaledBitmaps(Set<Integer> ids);

	/**
	 * Supprime un ensemble de bitmap redimensionnes identifies par les id
	 * renseignes
	 * 
	 * @param bitmaps
	 *            un sparseArray de bitmap
	 */
	public void removeAllScaledBitmaps(SparseArray<Bitmap> bitmaps);

	/**
	 * Retourne true si un bitmap redimensionne stocke correspond a l'id
	 * renseigne
	 * 
	 * @param id
	 *            l'identifiant d'un bitmap
	 * @return true si l'identifiant renseigne correspond a un bitmap
	 *         redimensionne stockee
	 */
	public boolean isScaledBitmapStored(Integer id);

	/**
	 * Supprime tous les bitmap redimensionnes
	 */
	public void clearScaledBitmaps();
}
